/*
 * @Author: your name
 * @Date: 2021-12-07 16:08:45
 * @LastEditTime: 2022-02-15 16:26:43
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \web-vue\src\apis\axios.js
 */
import axios from 'axios'
import qs from 'qs'
import{
  Message
} from 'element-ui'
import router from '../router'
import { env } from 'shelljs'

//axios.defaults.baseURL = "http://localhost:8081"

//const tokenKey = 'Web-Auth-Token'

const request = axios.create({
  timeout: 5000,
  //baseURL: process.env.VUE_APP_API_HOST,
  headers: {
    'Content-Type': "application/json;charset=UTF-8",
    //'Redirect-Header': true
  }
})

// 拦截，每个请求头里带token
request.interceptors.request.use(config=>{
  config.headers['Authorization']=localStorage.getItem("token")
  return config

})

// 拦截，对返回数据的拦截
request.interceptors.response.use(response=>{
  let res = response.data

  // 如果返回的状态码是200，那么正常返回，否则返回异常信息
  if(res.code===200){
    return response
  }else{
    Message.error(!res.msg?'系统异常':res.msg)
    return Promise.reject(response.data.msg)
  }
},error=>{
  console.log('error')
  console.log(error)
  if(error.response){
    error.message = error.response.data.msg
    const res = error.response.data

    if(res.status === 401)
    {
      router.push("/login")
    }

    Element.Message.error(res.message,{duration:3000})

    
  }
  
  //return Promise.reject(error)
})

export default request
 
// const baseHeader =() => {
//   const token = window.localStorage.getItem(tokenKey)
//   const siteId = window.localStorage.getItem('siteId')
//   return {
//     [tokenKey]: token,
//     siteId
//   }
// }

// const initCookies = () => {
//   var cookie = document.cookie
//   var items = cookie.split(';')
//   var keys = {}
//   items.forEach(function(item){
//     var kv = item.split('=')
//     if(kv){
//       keys[kv[0].replace(/(^\s*)|(\s*$)/g,'')] = kv[1].replace(/(^\s*)|(\s*$)/g,'')
//     }
//   })
//   return keys
// }

// request.interceptors.request.use(config => {
//   config.headers = Object.assign({},baseHeader(), config.headers)
//   if(!config.url){
//     Message.error({
//       showClose: true,
//       message: '接口地址错误',
//       type: 'error',
//       duration: 3 * 1000
//     })
//   }else if(config.url.endsWith('/cmsmanager/login')){
//     config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
//     config.headers['X-XSRF-TOKEN'] = initCookies()['X-XSRF-TOKEN']||initCookies()['XSRF-TOKEN']
//     config.data = qs.stringify(config.data)
//   }
//   return config
// }, error => {
//   console.log(error)
//   return Promise.reject(error)
// })

// request.interceptors.response.use(response => {
//   localStorage.needchangepassword = response.headers.needchangepassword
//   if(response.data.token && response.data.token !== '' && response.data.token !== null){
//     localStorage.setItem(tokenKey,response.data.token)
//   }
//   return response
// },error => {
//   let message = error.message
//   if(error.response.data.code === 404){
//     message = '接口访问失败'
//   }
//   Message({
//     showClose: true,
//     message,
//     type: 'error',
//     duration: 3 * 1000
//   })
//   return Promise.reject(error)
// })

// const checkStatus = response => {
//   if(response && response.data.code === 401){
//     window.localStorage.setItem(tokenKey,'')
//     const url = window.location.hash.substr(1)
//     if(/^\/login/.test(url)){
//       router.push(url)
//     }else{
//       router.push(`/login?redirect=${escape(url)}`)
//     }
//     return
//   }
//   if(response && (response.data.code === 200 || response.data.code === 304 || response.data.code === 400 || response.data.code === 404)){
//     return response.data
//   }
//   return {
//     code: -404,
//     msg: '网络异常'
   
//   }
// }

// function checkCode(res){
//   if([501,502,503,506].includes(res.code)){
//     window.localStorage.setItem(tokenKey,'')
//     const url = window.location.hash.substr(1)
//     if(/^\/login/.test(url)){
//       router.push(url)
//     }else{
//       router.push(`/login?redirect=${escape(rul)}`)
//     }
//   }
//   if(![200,1,506,15024,10555].includes(res.code)){
//     Message.closeAll()
//     Message({
//       showClose: true,
//       message: res.message || '服务器端错误',
//       type: 'error',
//       duration: 3* 1000
//     })
//   }

//   if(res.code === 812){
//     Message.closeAll()
//     Message({
//       showClose: true,
//       message: res.message,
//       type: 'success',
//       duration: 1000
//     })
//   }

//   if(res.code === 13187){
//     Message.closeAll()
//   }

//   return res
// }

// const requestLogin = axios.create({
//   baseURL: process.env.VUE_APP_API_PREFIX,
//   timeout: 60000,
//   headers: {
//     'Content-Type': 'application/x-www-form-urlencoded'
//   }
// })

// requestLogin.interceptors.request.use(config => {
//   config.data = qs.stringify(config.data)
//   return config
// }, error => {
//   return Promise.reject(error)
// })

// requestLogin.interceptors.response.use(response => {
//   return response
// }, error => {
//   let message = error.message
//   if (error.response.data.code === 404){
//     message = '接口访问失败'
//   }
//   Message({
//     showClose: true,
//     message,
//     type: 'error',
//     duration: 3* 1000
//   })
//   return Promise.reject(error)
// })

// export default {
//   request (config) {
//     return axios.request(config).then(checkStatus).then(checkCode)
//   },
//   login (url,data){
//     return requestLogin({
//       method: 'post',
//       url,
//       data,
//     }).then(checkStatus).then(checkCode)
//   },
//   Upload (url,data,onUploadProgress = () => {}){
//     return request({
//       method: 'post',
//       url,
//       headers: {
//         'Content-Type': 'multipart/form-data'
//       },
//       data,
//       onUploadProgress,
//       timeout: 0
//     }).then(checkStatus).then(checkCode)
//   },
//   download (url,data,onDownloadProgress = () => {}){
//     return request({
//       method: 'post',
//       url,
//       data,
//       responseType: 'blob',
//       onDownloadProgress,
//       timeout: 0
//     }).then(checkStatus)
//   },
//   post (url,data,onUploadProgress = () => {}){
//     return request({
//       method: 'post',
//       url,
//       data,
//       onUploadProgress
//     }).then(checkStatus).then(checkCode)
//   },
//   get (url, params, headers = {}) {
//     var param = params
//     // if (params) {
//     //   Object.keys(params).forEach(k => {
//     //     param[k] = encodeURI(params[k])
//     //   })
//     // }
//     return request({
//       method: 'get',
//       url,
//       params: param,
//       headers,
//       timeout: 1400000
//     }).then(checkStatus).then(checkCode)
//   },
//   put (url, data, headers = {}) {
//     return request({
//       /* global-put-port start */
//       method: 'post',
//       url: url + '/update',
//       /* global-put-port change
//         method: 'put',
//         url,
//         global-put-port change */
//       /* global-put-port end */
//       data,
//       headers
//     }).then(checkStatus).then(checkCode)
//   },
//   patch (url, data) {
//     return request({
//       method: 'patch',
//       url,
//       data
//     }).then(checkStatus).then(checkCode)
//   },
//   delete (url, data) {
//     let api = url

//     /* system-cms-prefix start */
//     let yun = url.indexOf('MODULE') > -1
//     /* system-cms-prefix end */
//     return request({
//       method: yun ? 'delete' : 'post',
//       url: api,
//       data
//     }).then(checkStatus).then(checkCode)
//   }
// }